With the constant development of computing technology, a computer cluster system (or called briefly as a cluster) has become an important computing mode or system. A cluster is generally composed of a set of nodes that communicate with each other. These nodes cooperate on software and/or hardware levels to collaboratively carry out a computing task. It should be noted that in the context of the present application, the nodes in a cluster may be physical nodes like different physical computing devices, or virtual nodes like a plurality of virtual machines VM on a same physical computing device. The nodes in the cluster may communicate with each other through various proper means, including but not limited to a local area network (LAN), a wide area network (WAN), an IP protocol-based network (for example, Internet), a peer to peer network (for example, an ad hoc peer network), cellular communication, RF communication, Bluetooth communication, process/inter-process communication, etc.
An important factor for measuring the performance of a cluster is whether the cluster may be scaled effectively and dynamically. When a cluster is initially constructed and deployed, it may have n nodes (n is an integer) to perform a computing task. However, with the running of the cluster, the demands of computing tasks may increase. At this point, it is often required to add new node(s) into the cluster. Therefore, the new node should be properly configured according to the functionality and state of the cluster, and it is usually necessary to copy one or more files from a source external to the node for tasks such as installing or setting. In the prior art, such a configuration often consumes lots of time resources and computing resources.
In order to further explain this problem, a cluster comprising a plurality of virtual machines on a same physical machine is taken as an example. In order to add a new node (in this example, it is a new virtual machine) to the cluster, for example, it is generally required to perform the following configurations in sequence: obtaining and installing an operating system (OS) mirror, a middleware required for implementing functions of the cluster, and running user applications on the virtual machine, etc. With the middleware as an example, in the prior art, obtaining and installing a middleware always needs copying required files from a central repository to a local space of the VM, and then installing and configuring the middleware on the OS mirror using these files. Then the middleware may be initiated and the user-level applications may be deployed thereon. It may be understood that when the number of files is too much or the size of a file is too large, the above process will consume considerable processing time.
Further, in the prior art, in order to install an application on a new node, all files related to the application are usually copied from the central repository to the node, and then the actual installation process can be started. However, some files may be useless for node configuration, which causes waste of resources. Additionally, copying files is generally performed in sequence. However, some files may not have dependencies. As a result, the potential concurrency may not be effectively utilized. It may be further understood that, in order to configure a new node, it is likely needed to install a plurality of applications on the new node, which requires a plurality of files to be obtained for installing each application. This inevitably makes the file repository and communication channel, among other things, become bottleneck resources of the system. These problems further dampen the efficiency of cluster scaling.
Considering a specific example, when it is needed to configure a Websphere™ Application of the International Business Machine Corporation (IBM) on a virtual machine node, according to the prior art, it takes 10 minutes or longer to copy the required files from the central repository. It should be noted that although the above depiction is given with reference to a virtual machine, similar problems likewise exist in scaling a physical cluster.
In order to improve the efficiency of cluster scaling, it has been proposed to only perform “pseudo” configuration when a new node is to be added into the cluster. In other words, when a new node is added to the cluster, rather than actually copying and installing the required applications to the node and/or performing corresponding configurations, any operation is performed only when it is actually required at runtime (for example, copying a file from the central repository and locally installing it). Although such solutions may improve the speed of adding a new node into a cluster, it only postpones the time required for configuring a new node and resource overhead to the running time. Many of above-mentioned problems such as sequential access and bottleneck resource are not actually solved.